package logic;

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import entity.EasyTextArea;

/**
 * 文件选择器.
 * @author Rex
 *
 */
public class FileChooser {

	/**
	 * 文件选择器.
	 * @param msg
	 */
	public static File action(EasyTextArea msg) {
		// 新建JFileChooser，初始化时同时设置默认路径
		JFileChooser chooser = new JFileChooser("D:\\");

		// 仅显示文件夹
		chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		// 禁止多选
		chooser.setMultiSelectionEnabled(false);
		// 定义弹出的文件选择器框
		chooser.showDialog(new JLabel(), "选择");

		// 获取用户选择的路径
		File dir = chooser.getSelectedFile();
		
		// 验证路径
		String str = "您尚未选择文件夹";
		int[] sums = null;
		if (dir != null) {
			str = "无法读取该目录";
			if ((sums = count(dir)) != null)
				str = dir.getAbsolutePath();
		}
		
		// 提示用户
		msg.setText(str);
		if (sums != null)
			msg.append("此路径下有" + sums[0] + "个文件," + sums[1] + "个子文件夹");
		
		return dir;
	}
	
	/**
	 * 	统计文件夹内的文件数目.
	 * 不包括子文件夹内的文件。
	 * @param folder
	 */
	private static int[] count(File folder) {
		int[] temp = null;

		File[] files = folder.listFiles();
		if (files != null) {
			temp = new int[2];
			for (File f : files)
				if (f.isFile())
					temp[0]++;// 文件数
				else
					temp[1]++;// 子文件夹数
		}

		return temp;
	}
	
}